﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo1
{
    class Program
    {
        /*
         1、定义一个方法，求一个整数数组中的最大值，最小值，和，平均数。如果是一个方法只能有一个返回值，
        那只能每一个都得定义一个方法来实现，不过有了ref和out这实现起来就方便多了。
        参考步骤：
        定义一个一维数组，数组中存放一些数据（控制台输入）。
        定义几个变量：max、min、sum、avg

        定义一个方法，方法返回数组元素之和,方法形参有max min avg。

        请用ref和out各做一遍，并在注释中，描述他们的区别。
         */
        static void Main(string[] args)
        {
            int[] arr = { 35, 21, 13, 46, 86 };
            int max1 = arr[0];//ref此处要初始化
            int min1 = arr[0];
            int avg1 = 0;
            int sum1 = refMethod(arr, ref max1, ref min1, ref avg1);
            Console.WriteLine("max:{0},min:{1},sum:{2},avg:{3}", max1, min1,sum1,avg1);
            Console.WriteLine();

            //out 要在方法内部初始化
            int[] arr2 = { 35, 21, 13, 46, 86 };
            int max2;
            int min2;
            int avg2;
            int sum2 = outMethod(arr2, out max2, out min2, out avg2);
            Console.WriteLine("max:{0},min:{1},sum:{2},avg:{3}", max2, min2, sum2, avg2);
        }
       public static int refMethod(int[] arr, ref int max1, ref int min1, ref int avg1)
        {
            int sum1 = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > max1)
                {
                    max1 = arr[i];
                }
                if (arr[i] < min1)
                {
                    min1 = arr[i];
                }
                sum1 += arr[i];
            }
            avg1 = (sum1 / arr.Length);
            return sum1;
        }
       public  static int outMethod(int[] arr2, out int max2, out int min2, out int avg2)
        {
            int sum2 = 0;
            max2 = arr2[0];
            min2 = arr2[0];
            for (int i = 0; i < arr2.Length; i++)
            {
                if (arr2[i] > max2)
                {
                    max2 = arr2[i];
                }
                if (arr2[i] < min2)
                {
                    min2 = arr2[i];
                }
                sum2 += arr2[i];
            }
            avg2 = (sum2 / arr2.Length);
            return sum2;
        }
    }
}
